home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 June
/
EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso
/
earcd
/
comm2
/
mmtsnd60.lha
/
REXX
/
MM_AutoSend.rexx
Wrap
OS/2 REXX Batch file
|
1996-04-26
|
6KB
|
266 lines
/*
** $VER: MM_AutoSend 0.60 (12.04.96)
**
** Written by Paolo Carotenuto
**
*/
DROP MM.
PARSE UPPER ARG MM.Group
MM.PathCfg='MM:Config/'
MM.PrgName='MM_AutoSend v0.60'
MM.Copyright='(C) 1994-96 By Paolo Carotenuto'
MM.LogLevel=2
IF MM.Group='?' THEN;DO
SAY ''
SAY MM.PrgName MM.Copyright
SAY ''
SAY 'Usage:'
SAY 'Rx MM_AutoSend [<Group> <Group>...]'
SAY ''
EXIT 0
END
ADDRESS 'MAILMANAGER'
CALL WriteLog(MM.PrgName 'Started')
CALL ReadConfig()
IF MM.Group ~='' THEN;DO
DO WHILE MM.Group ~=''
PARSE VAR MM.Group Gruppo MM.Group
MM_SearchInStem MM.Aree Tag Gruppo STR
IF Tag.Count>0 THEN;DO
CALL ProcessaArea(Tag.0)
CALL WriteLog('End')
END
ELSE;DO
CALL WriteLog('*** Error: Group ['Gruppo'] Not Configured')
END
END
END
ELSE;DO
DO i=0 FOR MM.Aree.Count
CALL ProcessaArea(MM.Aree.i)
CALL WriteLog('End')
END
END
IF MM.Esporta.Count>0 THEN;DO
DO i=0 FOR MM.Esporta.Count
MM_Export MM.Esporta.i
END
END
CALL WriteLog(MM.PrgName 'Ended')
EXIT
ProcessaArea:PROCEDURE EXPOSE MM.
PARSE ARG Tag
CALL WriteLog('Processing: ['Tag']')
IF MM.File.Tag='' THEN;DO
CALL WriteLog(' *** Error: Keyword "FILE" Not Configured')
RETURN
END
IF MM.To.Tag.Count=0 THEN;DO
CALL WriteLog(' *** Error: Keyword "TO" Not Configured')
RETURN
END
PARSE VAR MM.File.Tag PathName Flags .
IF ~EXISTS(PathName) THEN;DO
CALL WriteLog(' File: ['PathName'] Not Found - Skiping!')
RETURN
END
CALL WriteLog(' File: ['PathName'] Found...')
FullSize=0
IF MM.Type.Tag ~='' THEN;DO
IF UPPER(MM.Type.Tag)='CP' THEN;DO
DO x=0 FOR MM.To.Tag.Count
PARSE VAR MM.To.Tag.x ToName Area .
CrossPosted='* CrossPosted in 'Area
MM_AddToStem MM.Body 'CrossPosted'
END
MM_AddToStem MM.Body 'MM.Null'
END
ELSE;DO
DO x=0 FOR MM.To.Tag.Count
ToAddress=''
PARSE VAR MM.To.Tag.x ToName Area Export ToAddress .
IF ToAddress ~='' THEN;DO
CarbonCopy='* CarbonCopy to 'TRANSLATE(ToName,' ','_')' ('ToAddress')'
MM_AddToStem MM.Body 'CarbonCopy'
END
END
MM_AddToStem MM.Body 'MM.Null'
END
END
IF EXISTS(MM.Header.Tag) THEN;DO
CALL WriteLog(' Reading Header: ['MM.Header.Tag']')
MM_ReadStem MM.Header.Tag MM.Body APPEND
FullSize=FullSize+WORD(STATEF(MM.Header.Tag),2)
END
CALL WriteLog(' Reading File : ['PathName']')
MM_ReadStem PathName MM.Body APPEND
FullSize=FullSize+WORD(STATEF(PathName),2)
IF EXISTS(MM.Footer.Tag) THEN;DO
CALL WriteLog(' Reading Footer: ['MM.Footer.Tag']')
MM_ReadStem MM.Footer.Tag MM.Body APPEND
FullSize=FullSize+WORD(STATEF(MM.Footer.Tag),2)
END
IF MM.From.Tag='' THEN MM.From.Tag=MM.Sysop
IF MM.Subj.Tag='' THEN MM.Subj.Tag='Nothing'
IF MM.Origin.Tag ~='' THEN Write.Origin=MM.Origin.Tag
Write.From=MM.From.Tag
Write.Subj=MM.Subj.Tag
Write.Tear=MM.PrgName
MM.Part=1
IF MM.Size.Tag ~=0 THEN;DO
MM.Testo.Count=0
Lun=0
Size=MM.Size.Tag*990
IF FullSize>Size THEN;DO
DO i=0 FOR MM.Body.Count
Len=LENGTH(MM.Body.i)
Lun=Lun+Len
Linea=MM.Body.i
MM_AddToStem MM.Testo 'Linea'
IF Lun>=Size THEN;DO
MM_AddToStem MM.Testo 'MM.Null'
MM_AddToStem MM.Testo 'MM.EndLine'
MM_AddToStem MM.Testo 'MM.Null'
MM_WriteStem 'T:MM_AutoSend.'MM.Part MM.Testo
MM.Part=MM.Part+1
MM.Testo.Count=0
Lun=0
MM_AddToStem MM.Testo 'MM.Null'
MM_AddToStem MM.Testo 'MM.StartLine'
MM_AddToStem MM.Testo 'MM.Null'
END
END
IF MM.Testo.Count>0 THEN MM_WriteStem 'T:MM_AutoSend.'MM.Part MM.Testo
END
ELSE MM_WriteStem 'T:MM_AutoSend.'MM.Part MM.Body
END
DO j=0 FOR MM.To.Tag.Count
ToName=''
ToAddress=''
FromAddress=''
PARSE VAR MM.To.Tag.j ToName Area Export ToAddress FromAddress .
MM_GetAreaInfo Area Info
IF Rc=4 THEN;DO
CALL WriteLog(' *** Error: Area: ['Area'] Not Found...')
ITERATE
END
Write.To=ToName
IF Info.Type='MAIL' THEN;DO
IF ToAddress='' THEN;DO
CALL WriteLog(' *** Error: No Address Found For Area: ['Area']')
ITERATE
END
IF UPPER(ToName)='SYSOP' THEN;DO
MM_GetNodeListNode ToAddress xInfo
IF Rc=0 THEN;DO
ToName=xInfo.SysOp
Write.To=ToName
END
ELSE;DO
CALL WriteLog(' *** Error: Address ['ToAddress'] Not Found')
ITERATE
END
END
Write.ToAddr=ToAddress
Write.FromAddr=FromAddress
Write.Flags='PVT'
IF Write.FromAddr='' THEN Write.FromAddr=Info.Addr
IF MM.Status.Count=FALSE THEN;DO
MM.Status.Count=TRUE
CALL AddLine('')
CALL AddLine('-+- 'MM.PrgName MM.Copyright)
CALL AddLine('')
MM_WriteStem 'T:MM_AutoSend.'MM.Part MM.Testo APPEND
END
CALL WriteLog(' Send NetMail to: ['ToName'] At ['ToAddress']')
END
ELSE;DO
CALL WriteLog(' Send Message to: ['ToName'] in Area ['Area']')
END
DO h=1 TO MM.Part
Write.File='T:MM_AutoSend.'h
MM_WriteMsg Area Write
END
IF UPPER(Export)='E' THEN;DO
MM_SearchInStem MM.Esporta Resp Area STR
IF Resp.Count=0 THEN;DO
MM_AddToStem MM.Esporta 'Area'
END
END
END
DO h=1 TO MM.Part
MM_DeleteFile 'T:MM_AutoSend.'h
END
IF UPPER(Flags)='KILL' THEN;DO
MM_DeleteFile PathName
CALL WriteLog(' Delete File: ['PathName']')
END
MM.Body.Count=0
MM.Status.Count=FALSE
MM.Esporta.count
RETURN
AddLine:PROCEDURE EXPOSE MM.
PARSE ARG Line
Cont=MM.Testo.Count
MM.Testo.Cont=Line
MM.Testo.Count=Cont+1
RETURN
ReadConfig:PROCEDURE EXPOSE MM.
MM_ReadStem MM.PathCfg||'MM_AutoSend.Cfg' Config
IF Rc ~=0 THEN;DO
CALL WriteLog('*** Error: Can not open config "'MM.PathCfg'MM_AutoSend.cfg"')
EXIT 10
END
IF ~SHOW('l',"rexxsupport.library") THEN;DO
IF ~ADDLIB("rexxsupport.library",0,-30,0) THEN;DO
SAY "Could not open rexxsupport.library"
EXIT 10
END
END
MM.Null=''
MM.EndLine=''
MM.StartLine=''
MM.Aree.Count=0
MM.Body.Count=0
MM.Esporta.Count=0
MM.Testo.Count=0
MM.Status.Count=FALSE
DO l=0 FOR Config.Count
PARSE VAR Config.l Keyword Dato
IF LEFT(Keyword,1)=';'|Keyword='' THEN ITERATE
Keyword=UPPER(Keyword)
IF Keyword='#END_MESSAGE' THEN MM.EndLine= Dato
IF Keyword='#START_MESSAGE' THEN MM.StartLine= Dato
IF Keyword='#GROUP' THEN;DO
Tag=UPPER(STRIP(Dato))
MM_AddToStem MM.Aree 'Tag'
MM.File.Tag=''
MM.From.Tag=''
MM.Subj.Tag=''
MM.Type.Tag=''
MM.Origin.Tag=''
MM.Header.Tag=' '
MM.Footer.Tag=' '
MM.Size.Tag=0
MM.To.Tag.Count=0
END
Dato=STRIP(Dato)
SELECT
WHEN Keyword='FROM' THEN MM.From.Tag= Dato
WHEN Keyword='SUBJ' THEN MM.Subj.Tag= Dato
WHEN Keyword='ORIGIN' THEN MM.Origin.Tag= Dato
WHEN Keyword='HEADER' THEN MM.Header.Tag= Dato
WHEN Keyword='FOOTER' THEN MM.Footer.Tag= Dato
WHEN Keyword='FILE' THEN MM.File.Tag= Dato
WHEN Keyword='TYPE' THEN MM.Type.Tag= Dato
WHEN Keyword='SIZE' THEN MM.Size.Tag= Dato
WHEN Keyword='TO' THEN MM_AddToStem 'MM.To.'Tag 'Dato'
OTHERWISE
END
END
MM_GetSysop 'MM.Sysop'
RETURN
WriteLog:PROCEDURE EXPOSE MM.
PARSE ARG Testo
MM_WriteLog 'Testo' MM.LogLevel
RETURN